Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

646
Views
AWS ECR, implementación basada en ECS: nginx: [emerg] host no encontrado en "app:9000" ascendente en /etc/nginx/conf.d/default.conf:2

Tengo dificultades para configurar la definición de tareas de AWS ECS para ejecutar contenedores simples basados en PHP-FPM y Nginx.

Mi contenedor de "aplicaciones" se ejecuta en la app:9000 y Nginx está en el puerto 80 . Nginx está reenviando la solicitud al contenedor de la aplicación a través de una fastcgi_pass app-upstream;

Todos estos están funcionando perfectamente en local. La misma configuración funciona perfectamente en la instancia de Docker de DigitalOcean, pero falla en AWS ECS.

Supongo que hay algún problema de configuración de definición de tareas, pero no puedo encontrarlo.

Registros de errores:

Obtengo este registro del contenedor Nginx

 nginx: [emerg] host not found in upstream "app:9000" in /etc/nginx/conf.d/default.conf:2

ingrese la descripción de la imagen aquí

y este registro del contenedor de la aplicación (PHP-FPM)

ingrese la descripción de la imagen aquí

ECS

Creé un clúster simple con la instancia T2 Small, que funciona perfectamente.

Dockerfile

En este Github Repo, agregué Dockerfile para la aplicación, la imagen de Nginx, el archivo docker-compose.yml y el archivo task-defination.json como referencia si hay algún error en los archivos de docker.

Código fuente en el repositorio de Github : https://github.com/arifulhb/docker-ecr-sample

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Su problema está relacionado con la ruta ascendente incorrecta mencionada en la configuración de nginx.

Haga lo siguiente para investigar, también evite usar nombres de contenedores personalizados en archivos docker-compose si no es necesario específicamente: -

La resolución rápida sería: -

  1. Elimina los nombres de los contenedores de los archivos docker-compose.
  2. El nombre de la clave de servicio (por ejemplo: test_app) mencionado en el archivo docker-compose se trata automáticamente como el nombre del contenedor, así que utilícelo.
  3. La ruta ascendente correcta después de realizar los cambios anteriores debe ser test_app:9000

Forma adecuada y recomendada de crear archivos docker-compose: -

  1. Cree una red docker personalizada supongamos con el nombre "intranet"
  2. Mencione esta red "intranet" en cada servicio que cree en su archivo docker-compose.
  3. Siga los pasos mencionados en la resolución rápida

¿Cómo te ayuda esto? Tiene la capacidad de inspeccionar esta red que creó, averiguar si sus contenedores están correctamente conectados e identificar los nombres utilizados para la conexión.

Command : docker network inspect <network_name>

NOTE : Docker treats container names as host names by default for internal connections.

over 4 years ago · Santiago Trujillo Report

0

Cuando se utilizan varios contenedores, el nombre del contenedor es muy importante para proporcionar conectividad interna.

Como veo su archivo de redacción de Docker, el nombre del contenedor debe coincidir con el nombre utilizado en nginx conf.

 version: '3' services: test_app: container_name: app # not test_app_1 volumes: - test-app-data:/var/www/app test_nginx: image: "xxxxxx.dkr.ecr.xx-xx-1.amazonaws.com/test-nginx" build: context: ./docker/nginx dockerfile: Dockerfile container_name: nginx ports: - "80:80" - "443:443" volumes: - test-app-data:/var/www/app - test-nginx-log:/var/log/nginx external_links: - app # not test_app_1 depends_on: - test_app volumes: test-app-data: test-nginx-log:
over 4 years ago · Santiago Trujillo Report

0

Yo también tengo el mismo problema. Mi contenedor "blog" se ejecuta en el puerto blog:8000 y el contenedor "nginx" está en el puerto 80 . El contenedor "nginx" está reenviando la solicitud al contenedor "blog".

ingrese la descripción de la imagen aquí

Porque no configuré "Enlaces" en "CONFIGURACIÓN DE RED" para el contenedor "nginx".

ingrese la descripción de la imagen aquí

Así que puse el nombre del contenedor trasero "blog" en el contenedor frontal "nginx" ("Enlaces" en "CONFIGURACIÓN DE RED" para el contenedor "nginx").

ingrese la descripción de la imagen aquí

Luego, fue exitoso ejecutar los contenedores "blog" y "nginx" correctamente.

Entonces, en su caso, coloque el nombre del contenedor posterior "aplicación" en el contenedor frontal "nginx" ("Enlaces" en "CONFIGURACIÓN DE RED" para el contenedor "nginx"). Funcionará. Usé la solución de Adiii .

ingrese la descripción de la imagen aquí

No olvide poner " CMD-SHELL, curl -f http://localhost:9000/ || exit 1 " en "Command" en "HEALTHCHECK" para el contenedor "app".

ingrese la descripción de la imagen aquí

Además, no olvide poner "aplicación" en "Nombre del contenedor" y seleccione "SANO" en "Condición" en "PEDIDO DE DEPENDENCIA DE INICIO" para el contenedor "nginx".

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!